import pymysql

class sqlconnect:
    @staticmethod  # 添加静态方法装饰器
    def sqljudje(sql):
        data = {
            'host': '172.16.1.29',
            'user': 'root',
            'password': 'Gs123+++!',
            'db': 'gst_broadcast',
            'charset': 'utf8mb4'
        }

        try:
            # 建立数据库连接
            conn = pymysql.connect(**data)
            cursor = conn.cursor()  # 创建游标

            # 执行 SQL 语句
            cursor.execute(sql)

            # 关键：提交事务（对 INSERT/UPDATE/DELETE 必须）
            conn.commit()
            result = cursor.fetchall()
            return result
            # 对于非查询语句，返回受影响的行数
            #rows_affected = cursor.rowcount
            #print(f"执行成功，受影响行数: {rows_affected}")
            #return rows_affected

        except pymysql.MySQLError as e:
            conn.rollback()  # 出错时回滚事务
            print(f"数据库操作失败: {e}")
            return -1

        finally:
            # 关闭游标和连接，释放资源
            if cursor:
                cursor.close()
            if conn:
                conn.close()



"""
#原代码：更新表出错
import pymysql

class sqlconnect:
  def sqljudje(sql):
    # 建立数据库连接
    data = {
      'host': '172.16.1.29',
      'user': 'root',
      'password': 'Gs123+++!',
      'db': 'gst_broadcast',
      'charset': 'utf8mb4'
    }

    # 尝试连接
    try:
      conn = pymysql.connect(**data)
      print("数据库连接成功！")
      # 接下来可以执行查询或其他操作...
    except pymysql.MySQLError as e:
      print(f"数据库连接失败: {e}")

    #conn = pymysql.connect(**data)

    # 创建游标对象,用于去执行sql操作
    cursor = conn.cursor()
    # 执行 SQL 查询或操作
    #提交事务
    conn.commit()



    cursor.execute(sql)  # 执行sql语句

    result = cursor.fetchall()  # 获取查询结果,result为元组tuple； 例：result[1][1]为字段对应值
    print("执行成功：", result)
    # print("打印输出结果类型",type(result))
    # print("result数据库类型：",type(result))
    return result





if __name__ == "__main__":
  sq2 = "update device set run_status = 1 where device_name between 1 and 20"
  sqlconnect.sqljudje(sql = sq2)
"""